package com.thinksns.sociax.api;

import com.thinksns.sociax.thinksnsbase.network.ApiHttpClient.HttpResponseListener;
import com.thinksns.sociax.thinksnsbase.utils.FormFile;

/**
 * Created by zhiyicx on 2017/4/24.
 */

public interface ApiEvent {
    static final String MOD_NAME = "Event";
    static final String GET_CATE_ALL = "getCateAll";//获取所有活动分类
    static final String GET_AREA_ALL = "getAreaAll";//获取全部不重复，活动已经使用的地区
    static final String GET_TOP_EVENT = "getTopEvent";//获取推荐活动 - 列表页的排序选择推荐活动后，调用这个API，并隐藏其他检索
    static final String GET_LIST = "getList";//获取活动列表 – 按照最新发布排序
    static final String GET_INFO = "getInfo";//获取活动详情
    static final String GET_REPLY = "getReply";//获取活动回复列表
    static final String ENROLLMENT = "enrollment";//活动报名
    static final String CREAT = "create";//创建活动
    static final String GET_AREA = "getArea";//获取地区信息（用于地区联级查询）
    static final String UPLOADIMAGE = "uploadImage";//上传封面 图片
    static final String MY_POST = "myPost";//我发起的活动
    static final String MY_ENROLLMENT = "myEnrollment";//我参与的活动
    static final String MY_STAR = "myStar";//我关注的活动
    static final String STAR = "star";//关注活动
    static final String UN_STAR = "unStar";//取消关注某活动
    static final String POST_COMMENT = "postComment";//添加活动评论
    static final String GET_EVENT_DAYS = "getEventDays";//获取当月有活动的日期
    static final String UP_LOAD_VIDEO = "uploadVideo";
    static final String EVENT_USERS = "getEventUsers"; //获取活动成员
    static final String MY_COMMENT = "myComment"; //获取收到的评论
    static final String DELETE_EVENT = "delEvent";
    static final String DELETE_COMMENT = "delComment"; // 删除评论

    /**
     * 获取所有分类
     */
    void getCateAll(HttpResponseListener listener);

    /**
     * 获取全部不重复，活动已经使用的地区
     *
     * @return
     */
    void getAreaAll(HttpResponseListener listener);

    /**
     * 获取推荐活动
     *
     * @param num      需要获取的数量，默认是5条，建议不要太多~~
     * @param listener
     * @return
     */
    void getTopEvent(int num, HttpResponseListener listener);

    /**
     * 获取活动列表 – 按照最新发布排序
     *
     * @param cid      分类id
     * @param area     地区id
     * @param time     时间，格式化时间或者时间戳
     * @param wd       关键词
     * @param page     分页，默认是1
     * @param listener
     * @return
     */
    void getList(String cid, String area, String time, String wd, String page, HttpResponseListener listener);

    /**
     * 获取活动详情
     *
     * @param eid      活动id
     * @param listener
     */
    void getInfo(String eid, HttpResponseListener listener);

    /**
     * 获取活动回复列表
     *
     * @param eid      活动id
     * @param page     分页码
     * @param listener
     */
    void getReply(String eid, String page, HttpResponseListener listener);

    /**
     * 活动报名
     *
     * @param eid      活动ID
     * @param name     称呼
     * @param sex      性别，1男，0女
     * @param num      报名数量
     * @param phone    联系方式
     * @param note     备注
     * @param listener
     */
    void enrollment(String eid, String name, int sex, int num, String phone, String note, HttpResponseListener listener);

    /**
     * 创建活动
     *
     * @param title      活动标题
     * @param stime      活动开始时间 格式化的字符串或者时间戳
     * @param etime      活动结束时间 格式化的字符串或者时间戳
     * @param area       地区ID
     * @param city       城市
     * @param address    详细地址
     * @param place      场所
     * @param image      图片ID
     * @param mainNumber 活动所需要的人数，如果是0则表示不限制
     * @param price      价格
     * @param tips       价格说明
     * @param cate       分类ID
     * @param audit      报名是否需要审核，值只有1和0
     * @param content    活动详细内容
     * @param listener
     */
    void create(String title, String stime, String etime, String area,
                String city, String address, String place, String image,
                String mainNumber, String price, String tips,
                String cate, int audit, String content,
                String longitude, String latitude, String mid, String attach, String video,
                HttpResponseListener listener);

    /**
     * 获取地区信息（用于地区联级查询）
     *
     * @param pid      父级地区ID，默认不传或者设置为0表示获取父级地区列表，传递，则表示获取该父级下的子级地区列表
     * @param listener
     */
    void getArea(String pid, HttpResponseListener listener);

    /**
     * 上传封面 图片
     *
     * @param photos   图片文件
     * @param listener
     */
    void uploadImage(FormFile[] photos, HttpResponseListener listener);

    /**
     * 我参与的活动
     *
     * @param page     页码
     * @param listener
     */
    void myEnrollment(int page, HttpResponseListener listener);

    /**
     * 我关注的活动
     *
     * @param page     页码
     * @param listener
     */
    void myStar(int page, HttpResponseListener listener);

    /**
     * 我发起的活动
     *
     * @param page     页码
     * @param listener
     */
    void myPost(int page, HttpResponseListener listener);

    /**
     * 关注活动
     *
     * @param eid 活动id
     */
    void star(String eid, HttpResponseListener listener);

    /**
     * 取消关注活动
     *
     * @param eid 活动id
     */
    void unStar(String eid, HttpResponseListener listener);

    /**
     * 添加活动评论
     *
     * @param eid           活动id
     * @param content       评论内容
     * @param to_uid        回复的回复用户id
     * @param to_comment_id 回复的回复id
     * @param listener
     */
    void postComment(String eid, String content, String to_uid, String to_comment_id, HttpResponseListener listener);

    /**
     * 获取当月有活动的日期
     *
     * @param cid  分类id
     * @param area city对应
     * @param time 必传，当月任意时间（格式化的时间或者时间戳）
     * @param wd   关键词
     */
    void getEventDays(String cid, String area, String time, String wd, HttpResponseListener listener);

    void upLoadVideo(FormFile[] formFile, HttpResponseListener listener);

    /**
     * 获取活动成员
     *
     * @param eid
     * @param page
     * @param listener
     */
    void getEventUsers(String eid, int page, HttpResponseListener listener);

    /**
     * @param max_id   分页标记
     * @param listener
     * @param someone  是否为单个活动评论, otherwise false
     * @param eid      是否为单个活动评论, 是传eid
     */
    void getMyComment(String eid, String max_id, boolean someone, HttpResponseListener listener);

    void delEvent(String eid, HttpResponseListener listener);

    void deleteComment(int comment_id, HttpResponseListener listener);
}
